package cn.tedu.apiday03;



import java.io.*;


public class IoReader {
    public static void main(String[]args) throws IOException {//字符流读取
        method();//FileReader读取
        method1();//BufferedReader读取
//总结
        //1 就读取效率上：BufferedReader>FileReader
        //2 BufferedReader底层源码展示：为了一个char[]，优化了把磁盘中数据读取到流里的过程，把数组读满了
        //一次性给Java程序展示，这个过程中减少了交互，提高效率
        //底层维护的数组，默认大小是8192，相当于8*1024字节= 8k.可以存储8k的数据


    }

    private static void method1() throws IOException {
        Reader r = new BufferedReader(new FileReader(new File("E:\\360downloads\\520.txt")));//触发了File类型的构造方法  匿名对象
        Reader r1 = new BufferedReader(new FileReader("E:\\360downloads\\520.txt"));//触发了String类型的构造方法
        //2 开始读取
//        int a = r.read();
//        System.out.println(a);
//        System.out.println(r.read());
//        System.out.println(r.read());
//        System.out.println(r.read());//没数据了就永远返回-1
//        System.out.println(r.read());
        int a =0;
        while ((a=r.read() )!= -1){
            System.out.println(a);
        }
        //3.释放资源
        r.close();
    }

    private static void method() throws IOException {
        //1 创建对象
        Reader r = new FileReader("E:\\360downloads\\520.txt");//触发了String类型的构造方法
        Reader r1 = new FileReader(new File("E:\\360downloads\\520.txt"));//触发了File类型的构造方法  匿名对象
        //2 开始读取
//        int a = r.read();
//        System.out.println(a);
//        System.out.println(r.read());
//        System.out.println(r.read());
//        System.out.println(r.read());//没数据了就永远返回-1
//        System.out.println(r.read());
        int a =0;
        while ((a=r.read() )!= -1){
            System.out.println(a);
        }
        //3.释放资源
        r.close();
    }
}
